This application, and the innovations and related subject matter disclosed herein, (collectively referred to as the “disclosure”) generally concern systems for procedurally altering maps of artificial terrain, and associated techniques. More particularly but not exclusively, disclosed systems and associated techniques pertain to altering terrain maps derived from one or more noise maps. As but one example, disclosed systems and techniques can scale or otherwise manipulate a map of artificial terrain by scaling or otherwise manipulating a subspace associated with the terrain. Some disclosed systems and techniques involve upsampling discretized, or sampled, noise maps for any of a variety of purposes. Such purposes can include managing limited computational and/or memory resources, and loading a map in a suitably short time. Disclosed approaches and systems for upsampling can maintain or achieve a desired map resolution without substantial distortion of a rendering of the map.
By way of background, noise maps can be used to generate artificial terrain for games. A noise map, generally, is a collection of randomly or pseudo-randomly selected numbers. Noise maps can have one or more dimensions. For example, a one-dimensional array populated with a collection of randomly or pseudo-randomly selected numbers constitutes a 1-D noise map, a two dimensional matrix populated with a collection of randomly or pseudo-randomly selected numbers constitutes a 2-D noise map, etc. Noise maps can be generated using a variety of approaches. As but one example, Perlin Noise is a publicly available algorithm for generating pseudo-random noise.
Noise maps having adjacent entries correlated with each other can ensure a smooth variation within the noise map. Such smoothly varying noise maps can be particularly well-suited for use in generating terrain maps for games, and generally are referred to in the art as being coherent. For example, each value in a noise map can be scaled to correspond to a height. Thus, a one-dimensional (1-D) noise map can be used to generate a cross-sectional hill profile, or a two-dimensional (2-D) noise map can be used to generate mountains and valleys in three-space.
A noise map can be computed in any number of dimensions, N, and can extend in each dimension infinitely subject to computer and memory limitations. Accordingly, applications that use noise maps often set a sample size along each respective dimension and, as a matter of convenience, typically establish integer-valued extents along each ordinate axis. Under such an approach, a finite region of a given noise map can be stored and accessed in a computationally efficient manner.
However, such sampling can lead to problems, particularly when using a noise map to generate an artificial terrain map. For example, a discretized noise map can have fewer samples than pixels on a display, leading to on-screen distortions when the noise map or a terrain map derived from the noise map is rendered to a display. Although a larger number of samples can sometimes be stored, as an alternative such a “brute-force” approach can lead to computational and memory inefficiencies. For example, a given application might require a high resolution (implying a high sample rate) only occasionally (e.g. in a particular region or during selected times), but those instances might be important when they arise. However, a “brute-force” approach of obtaining a larger number of noise map samples for those occasional instances imposes computational and memory overhead under all conditions. For example, loading a larger number of samples can take longer, manipulating a larger number of samples can require exponentially more computations, etc. Thus, despite that a higher resolution corresponding to a larger number of samples might be needed only occasionally, performance and efficiency can be reduced under most if not all conditions by simply increasing a sample size.
Thus, a need remains for computationally efficient systems and associated techniques to compute, discretize and store noise maps. As well, a need remains for techniques to procedurally generate artificial terrain maps with small amounts of stored data. A need also remains for systems that can initialize applications in a suitably short time. Further, a need remains for artificial terrain maps and other maps generated from a noise map to maintain a selected degree of resolution regardless of the scale at which the map is being observed or rendered.